package com.cxs.canvas2pixelmaptest.util;

import ohos.app.Context;
import ohos.media.image.ImageSource;
import ohos.media.image.PixelMap;
import ohos.media.image.common.AlphaType;
import ohos.media.image.common.PixelFormat;
import ohos.media.image.common.Size;

import java.io.InputStream;

public class ImageUtils {

    /*
        通过资源id获取解码后的图片
     */
    public static PixelMap getPixelMap(Context context, int resourceId) {
        // 创建图像数据源ImageSource对象
        try {
            InputStream inputStream = context.getResourceManager().getResource(resourceId);
            ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions();
            srcOpts.formatHint = "image/jpg";

            ImageSource imageSource = ImageSource.create(inputStream, srcOpts);
            PixelMap pixelmap = imageSource.createPixelmap(null);
            return pixelmap;
        }catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /*
        创建位图对象PixelMap
     */
    public static PixelMap createPixelMap(int width, int height) {
        PixelMap.InitializationOptions options = new PixelMap.InitializationOptions();
        // 要创建的PixelMap的大小
        options.size = new Size(width, height);
        /*
            图像数据的像素格式
            ARGB_8888: 表示每个像素存储32位
            RGB_565: 表示每个像素以16位存储
            UNKNOWN: 未知格式
         */
        options.pixelFormat = PixelFormat.ARGB_8888;
        /*
            要创建的像素映射的像素值是否可以编辑
         */
        options.editable = true;
        PixelMap pixelMap = PixelMap.create(options);
        return pixelMap;
    }
}
